package HomeWork;

import java.util.Scanner;

/*
商场购物时根据消费者的用户类型不同，结算方式存在一定差异。普通顾客只支持现金（包含支付宝，微信）结算。
会员顾客则可以使用积分抵现或者现金结算，现金结算后会返还一定比例的积分到会员积分账户。
现在黑马超市做活动，会员用户消费每满100元赠送500积分【不满则不送】，10积分可抵现1元。会员账户的扣款规
则默认先用积分抵现，如果积分不足则剩余部分需要使用现金消费，现金消费部分则会产生积分返还到会员账户。
现有1000积分和500元现金，如果账户类型为普通顾客时，积分无效。请设计程序，完成不同类型用户消费不同金额
时的账户结算功能，要求会员支付功能和普通顾客支付功能使用方法重载进行区分
 */
public class Strengthen03 {
    public static void main(String[] args) {
        /*
        1. 普通用户支付（顾客类型、现金）
            1）现金支付（double）

        2. 会员支付（顾客类型、现金、积分）
            1）现金支付（double）
            2）积分扣分（int）

         */
        int customer;
        double price;
        int points = 1000;
        double remain = 500.0;

        Scanner sc = new Scanner(System.in);

        while(true){
            System.out.println("请输入付款类型【0】普通账户【1】会员：");
            customer = sc.nextInt();
            if(customer != 0 && customer != 1){
                System.out.println("顾客类型错误，请重新输入！");
                continue;
            }

            while(true){
                System.out.println("请输入付款金额：");
                price = sc.nextDouble();
                if(price < 0){
                    System.out.println("金额错误，请重新输入！");
                    continue;
                }else {
                    break;
                }
            }

            if(customer == 0){
                customer(price,remain);
                break;
            }else{
                customer(price,remain,points);
                break;
            }

        }
    }
    //会员
    public static void customer(double price, double remain, int points){
        points /= 10.0;
        if(price > remain + points){
            System.out.println("金额不足！");
        }else if(price <= points){
            System.out.println("付款成功!");
            points -= price;
            System.out.println("您的账户剩余积分："+points);
            System.out.println("您的账户剩余余额："+remain);
        }else{
            remain -= (price - points);
            points = (int)(price - points)/100 * 500;
            System.out.println("您的账户剩余积分为："+points);
            System.out.println("您的账户余额为："+remain);
        }

    }

    //普通顾客
    public static void customer(double price, double remain){
        if(price > remain){
            System.out.println("现金不足！");
        }else {
            System.out.println("付款成功!");
            System.out.println("本次消费"+price+"元，收您"+remain+"，找您"+pay(price,remain)+"元。");
        }

    }




    //现金支付
    public static double pay(double price, double remain){
        return remain - price;
    }




}
